home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 May: Tool Chest / Developer CD Series May 1996 (Tool Chest) (Apple Computer) (1996).iso / Tool Chest / Development Tools & Languages / Macintosh Common Lisp Related / Patches / MCL 2.0 patch 2 / mcl2.0p2.doc next >
Encoding:
Text File  |  1993-09-16  |  20.0 KB  |  599 lines  |  [TEXT/ttxt]

  1. MCL 2.0p2 Release Notes
  2.  
  3.  
  4. Installation
  5.  
  6. You probably received mcl2.0p2.fasl in BinHex (.hqx) format. Before you
  7. can install the patch you will need to decode the BinHex, using an 
  8. application (like StuffIt or Compact Pro) that knows how to deal with
  9. BinHex. You can also use the "BinHex" application shipped with MCL 2.0,
  10. in the "Examples:" folder.
  11.  
  12. To install mcl2.0p2.fasl, create a folder called "patches 2.0" in your 
  13. MCL folder, put the decoded patch file into it, start up MCL 2.0p1, 
  14. then type:
  15.  
  16.     (ccl::load-patches)
  17.     (save-application "MCL 2.0p2" :init-file "init")
  18.  
  19. You must install Patch 1 before (or at the same time as) you install
  20. patch 2. When you start up the new MCL 2.0p2 application, it should 
  21. know its new patch level:
  22.  
  23.     Welcome to Macintosh Common Lisp Version 2.0p2!
  24.  
  25. If you have any problems installing or using this patch, please let us
  26. know at 
  27.  
  28.     bug-mcl@cambridge.apple.com
  29.  
  30. Thanks for using our Lisp!
  31.  
  32.  
  33.  
  34. Notes
  35.  
  36. The following describes some of the contents of this patch. The
  37. "individual patch file" names are for our own bookkeeping. The point
  38. of the following notes is to allow you to recognize whether a particular
  39. fix made it into this release, not to fully describe all of the bugs fixed. 
  40. Most of them are drawn from comments in the source code; many may seem pretty 
  41. cryptic, especially if you haven't encountered the bug yourself. 
  42. Feel free to skim!
  43.  
  44.  
  45. ; ==== New file: reindex-interfaces-patch.lisp ====
  46. ; reindex-interfaces takes two keyword args that allow
  47. ; the process to be streamlined:
  48. ;
  49. ; reindex-interfaces &key :which :files
  50. ;
  51. ; Valid values for the :which keyword
  52. ;   nil        the default. Parse all definitions
  53. ;   :traps     parse only trap definitions
  54. ;   :no-traps  parse only non-trap definitions (constants, mactypes, records)
  55. ;
  56. ; Valid values for the :files keyword
  57. ;   nil        the default. Parse all files in "ccl:interfaces;*.lisp"
  58. ;   T          Parse all files that are newer than the oldest index file.
  59. ;   string     same as (list string)
  60. ;   list       parse all files in the list. Wildcards are allowed.
  61. ;              The directory defaults to "ccl:interfaces;".
  62. ;              The file type defaults to ".lisp".
  63. ;
  64. ; Examples:
  65. ;
  66. ; To bring the interface in line with changes in the files:
  67. ;
  68. ;   (reindex-interfaces :files t)
  69. ;
  70. ; To reindex the file "ccl:interfaces;osutils.lisp"
  71. ;
  72. ;   (reindex-interfaces :files "osutils")
  73. ;
  74. ; Note: you rarely want to specify the :which keyword. Since entries
  75. ; are indexed by position in the file, you must reindex all definitions
  76. ; that are below anything that you changed.
  77.  
  78.  
  79. ; ==== New file: hardcopy-patch.lisp ====
  80. ; You can now print a fred-dialog-item as well as a fred-window.
  81. ;
  82. ; Some _PrXXXX traps seem to clobber thePort when ImageWriter
  83. ;               in use.  Clobber it back, fixing ImageWriter
  84. ;               printing problems.
  85.  
  86.  
  87. ; ==== New file: fround-patch.lisp ====
  88. ; (fround 3) no longer signals an error
  89.  
  90.  
  91. ; ==== New file: compiler-let-patch.lisp ====
  92. ; Make compiler-let maintain the bindings around compilation
  93. ; of the entire enclosed top-level form. Part of the
  94. ; compilation was done after the bindings had disappeared before.
  95.  
  96.  
  97. ; ==== New file: undefined-functions-patch.lisp ====
  98. ; Add two functions which are referenced by MCL, but not defined:
  99. ; sort-list-error and %path-get-long-dir-info
  100.  
  101.  
  102. ; ==== New file: %make-uvector-patch.lisp ====
  103. ; nx2-seq-bind-var now generates code to set the subtype after
  104. ; calling $sp-stkallocgv
  105.  
  106.  
  107. ; ==== New file: shift-f-key-patch.lisp ====
  108. ; shift f-key patch
  109.  
  110.  
  111. ; ==== New file: Default-button-patch.lisp ====
  112. ;;; This patch changes the pen pattern for the outlines
  113. ;;; of disabled default buttons so they are "greyed" out.
  114.  
  115.  
  116. ; ==== New file: shiftf-rotatef-patch.lisp ====
  117. ; Make shiftf & rotatef evaluate their getters in the right order
  118.  
  119.  
  120. ; ==== New file: modal-dialog-patch.lisp ====
  121. ; don't return-from-modal-dialog when any random window closes
  122.  
  123.  
  124. ; ==== New file: locked-gethash-patch.lisp ====
  125. ; Gethash returned the wrong value when it found the key
  126. ; in the locked-additions alist.
  127.  
  128.  
  129. ; ==== New file: typep-standard-object.lisp ====
  130. ; Add type predicate to speed up (typep x 'standard-object).
  131.  
  132.  
  133. ; ==== New file: window-eos-patch-2.lisp ====
  134. ; Tried the following in this order until the window is on the screen:
  135. ;
  136. ; Move to the default-position arg or (view-default-position window)
  137. ; Resize to the default-size arg or (view-default-size window)
  138. ; Move to (window-on-screen-position window)
  139. ; Resize to (window-on-screen-size window)
  140. ;
  141. ; window-on-screen-position & window-on-screen-size are new generic
  142. ; functions. The window methods return the values that used to be
  143. ; hard-coded into window-ensure-on-screen (#@(6 44) & #@(502 147)
  144. ; respectively).
  145.  
  146.  
  147. ; ==== New file: non-constant-deftrap-patch.lisp ====
  148. ; Don't try to define-constant in deftrap if the value isn't a constant.
  149.  
  150.  
  151. ; ==== New file: fred-caps-lock-patch.lisp ====
  152. ; c-n & c-m-m no longer behave as if the shift key is down when
  153. ; the caps lock key is down.
  154.  
  155.  
  156. ; ==== New file: set-fred-font-patch.lisp ====
  157. ; set-view-font for fred-mixin should use buffer-set-font-spec
  158. ; rather than the default method which does buffer-set-font-codes
  159.  
  160.  
  161. ; ==== New file: expand-trap-patch.lisp ====
  162. ; The :case register-trap keyword had the wrong value.
  163. ; expand-trap needed to copy-tree the implementation, not copy-list
  164.  
  165.  
  166. ; ==== New file: windoid-close-patch.lisp ====
  167. ; No longer need the :before method on window-close.
  168. ; We can now call the WDEF during GC (which is exactly what #_DisposeWindow
  169. ; does).
  170.  
  171.  
  172. ; ==== New file: inline-defun-patch-2.lisp ====
  173. ; make the following work from the Listener as well as when
  174. ; compiled from a file. (Patch 1 fixed it for the file compiler, but
  175. ; broke it for the Listener).
  176. (declaim (inline inline-func))
  177. (defun inline-func (a b)
  178.   (+ a b))
  179. (defun use-inline-func (a b)
  180.   (inline-func a b))
  181.  
  182.  
  183. ; ==== New file: equalp-hash-patch.lisp ====
  184. ; EQUALP hash tables no longer error with CLOS instances as keys.
  185.  
  186.  
  187. ; ==== New file: format-comma-patch.lisp ====
  188. ; Format-print-number for mincol, padchar neq #\space, and comma char or interval
  189.  
  190.  
  191. ; ==== New file: arglist-patch.lisp ====
  192. ; (arglist #'(lambda (...) ...)) no longer calls arglist-from-help-file
  193.  
  194.  
  195. ; ==== New file: generic-plus-patch.lisp ====
  196. ; CERROR about replacing a kernel function when a user
  197. ; decides to replace a non-generic function with a generic function.
  198.  
  199.  
  200. ; ==== New file: fred-scroll-balloon-patch.lisp ====
  201. ; Make moving the thumb on a fred-window's horizontal scroll bar
  202. ; work correctly if a Help balloon is  up over the window.
  203.  
  204.  
  205. ; ==== New file: color-components-patch.lisp ====
  206. ; Make sure that white is white 
  207.  
  208.  
  209. ; ==== New file: disabled-table-patch.lisp ====
  210. ; Make disabled TABLE-DIALOG-ITEM's behave properly.
  211. ;
  212. ; Also makes VISIBLE-DIMENSIONS return NIL instead of signalling
  213. ; an error if called when (view-size item) is NIL.
  214. ; VIEW-DEFAULT-SIZE will respect VISIBLE-DIMENSIONS if specified.
  215.  
  216.  
  217. ; ==== New file: text-justification-patch.lisp ====
  218. ; Text-justification is now an :instance slot of static-text-dialog-item.
  219. ; It used to be a :class slot which made no sense at all.
  220.  
  221.  
  222. ; ==== New file: scroll-bar-size-patch.lisp ====
  223. ; Do the right thing for :view-size initarg and no :length or :width initarg.
  224. ; Also, don't ignore the :setting initarg.
  225.  
  226.  
  227. ; ==== New file: reactivate-window-patch.lisp ====
  228. ; Make clicking in a deactivated front-window reactivate it
  229. ; instead of calling view-click-event-handler.
  230. ; reselect-windows no longer calls view-activate-event-handler
  231. ; on windows that are already active-p.
  232. ; Null and key events are not sent to inactive windows.
  233. ; Deactivating the *selected-window* sets *selected-window* to NIL
  234. ; so that clicking on a windoid won't reactivate it.
  235.  
  236.  
  237. ; ==== New file: mlfss-patch.lisp ====
  238. ; Return NIL for the second value of make-load-form-saving-slots
  239. ; when there are no slots to save.
  240. ; Also, use ALLOCATE-INSTANCE instead of MAKE-INSTANCE or MAKE-<structure-name>.
  241.  
  242.  
  243. ; ==== New file: prepare-to-quit-patch.lisp ====
  244. ; Close windows from back to front while closing, but
  245. ; bring a window to the front before closing it if it
  246. ; needs saving.
  247.  
  248.  
  249. ; ==== New file: window-layer-patch.lisp ====
  250. ; Make the :window-layer initarg work for windows.
  251. ; Also, make (set-window-layer windoid 0) work for an invisible windoid.
  252.  
  253.  
  254. ; ==== New file: windoid-window-type-patch.lisp ====
  255. ; An explicit :window-type of NIL or :WINDOID to (make-instance 'windoid)
  256. ; gets the default windodefproc instead of an error.
  257.  
  258.  
  259. ; ==== New file: fred-selection-patch.lisp ====
  260. ; Fixes the following problem:
  261. #|
  262. Select this phrase 
  263. in a Fred window
  264. please
  265.  
  266. Click after the "l" in "Select", and drag down and to the right of "window" on
  267. the second line.  With the cursor approximately under the "e" in "phrase", move
  268. the cursor up and down so that the third line becomes alternately selected and
  269. deselected.  Note how the highlighting under "red window" on the second line is
  270. inconsistent.  As you move the mouse up and down, the selected area grows and
  271. shrinks by one pixel.  This is unusual, slightly annoying and it would be nice
  272. if you'd fix it.
  273. |#
  274.  
  275.  
  276. ; ==== New file: c-x-c-i-patch.lisp ====
  277. ; ed-inspect-current-sexp no lonver skips over reader macros
  278. ; in the sexp. This makes selecting "#x111" and typing c-x c-i
  279. ; pop up an inspector window for 273. instead of 111.
  280.  
  281.  
  282. ; ==== New file: frec-activate-patch.lisp ====
  283. ; frec-activate no longer calls frec-idle.
  284. ; This keeps the cursor from flashing when you click
  285. ; in a fred-dialog-item that is not the current-key-handler
  286.  
  287.  
  288. ; ==== New file: vacant-position-patch.lisp ====
  289. ; Don't attempt to set the SIZE slot of a view. The slot is named VIEW-SIZE.
  290.  
  291.  
  292. ; ==== New file: view-contains-point-patch.lisp ====
  293. ; Patch to make MCL work the same way the control
  294. ; manager does: e.g. a view contains its top and left border lines,
  295. ; but not the bottom and right border lines.
  296.  
  297.  
  298. ; ==== New file: load-pathname-patch.lisp ====
  299. ; translate component - source :unspecific or nil, to "*" => result :unspecific or nil
  300.  
  301.  
  302. ; ==== New file: sqrt-patch.lisp ====
  303. ; Sqrt was slow for floats
  304.  
  305.  
  306. ; ==== New file: documentation-patch.lisp ====
  307. ; The documentation window now shows arglists for symbols not in the help file.
  308.  
  309.  
  310. ; ==== New file: tsignal-error-patch.lisp ====
  311. ; The error message for an invalid arg to the CHARACTER function
  312. ; now makes sense.
  313. ; So does the error message for an array with no fill pointer
  314. ; to set-fill-pointer.
  315. ;
  316. ; Examples:
  317. (character 456)
  318. ; used to say: Error: Unbound variable: 456 .
  319. ; now says: Error: Can't coerce 456 to CHARACTER
  320.  
  321. (set-fill-pointer "foo" 1)
  322. ; used to say: Error: Bad initialization form: "foo"
  323. ; now says: "foo" is not an array with a fill pointer.
  324.  
  325.  
  326. ; ==== New file: gf-keyvect-patch.lisp ====
  327. ; The following no longer signals an error due
  328. ; to looking inside a generic function when attempting to
  329. ; check keywords:
  330. (defmethod foo ((x integer) &key y)
  331.   (list x y))
  332. (trace foo)
  333. (defun bar (x y)
  334.   (foo x :y y))
  335.  
  336.  
  337. ; ==== New file: step-interrupts-patch.lisp ====
  338. ; The stepper no longer hangs if invoked while
  339. ; (or (< *interrupt-level* 0) *processing-events*)
  340.  
  341.  
  342. ; ==== New file: debugger-hook-patch.lisp ====
  343. ; make debugger-hook actually do something
  344.  
  345.  
  346. ; ==== New file: etdi-default-size-patch.lisp ====
  347. ; editable-text-dialog-items no longer default to being one pixel
  348. ; higher than other dialog-items.
  349. ;
  350. ; fred-dialog-items no longer appear the first time with their
  351. ; text 3 pixels to the right of where it belongs.
  352.  
  353.  
  354. ; ==== New file: constant-fold-expt-patch.lisp ====
  355. ; constant fold applications of EXPT
  356.  
  357.  
  358. ; ==== New file: save-application-patch.lisp ====
  359. ; in the cleanup form - don't make a new listener if there isn't one
  360. ; Required to make save-application work from a menu or dialog 
  361.  
  362.  
  363. ; ==== New file: pathname-up-patch.lisp ====
  364. ; deal with 2 UPs
  365. ; semi-colon can mean up too
  366.  
  367.  
  368. ; ==== New file: directory-alias-patch-2.lisp ====
  369. ;; Yet another patch for avoiding indirect alias loops.
  370. ;; This one only eschews descending directories that are
  371. ;; found as a result of alias resolution. Hence it can't screw up
  372. ;; when there are no aliases in sight!
  373. ;; What is today called *directories-done* was %all-directories in patch 1
  374.  
  375.  
  376. ; ==== New file: movable-dialog-patch.lisp ====
  377. ; Add the :movable-dialog window-type.
  378. ; e.g. (make-instance 'window :window-type :movable-dialog)
  379.  
  380.  
  381. ; ==== New file: shared-fred-buffer-patch.lisp ====
  382. ; Make updating work correctly when fred-dialog-items
  383. ; share a buffer. Also, don't clear the buffer if a :buffer
  384. ; initarg is given to a fred-dialog-item.
  385.  
  386. ; Test code: the two items should stay in sync
  387. ; and both should start out containing "Some text to start with"
  388. (let (et1)
  389.   (make-instance 'window
  390.     :view-size #@(200 210)
  391.     :view-subviews (list (setq et1
  392.                                (make-instance 'fred-dialog-item
  393.                                  :view-position #@(5 5)
  394.                                  :view-size #@(195 90)
  395.                                  :dialog-item-text "Some text to start with"))
  396.                          (make-instance 'fred-dialog-item
  397.                            :view-position #@(5 100)
  398.                            :view-size #@( 195 90)
  399.                            :buffer (fred-buffer et1)))))
  400.  
  401.  
  402. ; ==== New file: advise-warn-patch.lisp ====
  403. ; advise and trace tell user about compiler warnings,
  404. ;        equal not eq for comparing advice-names.
  405.  
  406.  
  407. ; ==== New file: table-frame-color-patch.lisp ====
  408. ; Make :frame color work correctly on table-dialog-item's
  409. ; The problem before was that the view-activate-event-handler &
  410. ; view-deactivate-event-handler methods set the fore-color to
  411. ; the :frame color so that System 6 scroll bars would be that color.
  412. ; This caused the text of any highlighted cells to be drawn in the
  413. ; :frame color as well, unless a :text color was specified either
  414. ; for the whole table or for the cell.
  415.  
  416.  
  417. ; ==== New file: window-size-parts-patch.lisp ====
  418. ; Call window-size-parts later in the initialization sequence,
  419. ; after the subviews have been added.
  420.  
  421.  
  422. ; ==== New file: another-table-patch.lisp ====
  423. ; cell-position now returns NIL for cells that are in the scroll bar area
  424. ; This makes the following work correctly (No squares drawn over the
  425. ; vertical scroll bar):
  426.  
  427. (let ((list-box 
  428.        (make-instance 'sequence-dialog-item
  429.          :table-sequence 
  430.          (loop for i below 10 collect i)
  431.          :sequence-wrap-length 3
  432.          :visible-dimensions 
  433.          (make-point 3 3)
  434.          :table-vscrollp t
  435.          :table-hscrollp t
  436.          :selection-type :contiguous)))
  437.   (set-view-container
  438.    list-box 
  439.    (make-instance 'dialog))
  440.   (cell-select list-box (make-point 3 2))
  441.   (cell-select list-box (make-point 3 1))
  442.   (cell-select list-box (make-point 3 0))
  443.   (window-select (ccl::current-listener)))
  444.  
  445. ;
  446. ; set-table-sequence now deselects cells that are beyond the end
  447. ; of the new sequence and maintains the selection for cells that
  448. ; are still in the new sequence. This keeps it from leaving turds
  449. ; when the sequence is set while its window is not the selected window.
  450. ; This requires a patch to "ccl:examples;boyer-moore.lisp", which
  451. ; depended on the old behavior (selection shifts when sequence gets
  452. ; longer).
  453. ;
  454. ; A number of the table-dialog-item methods were conditionalized
  455. ; on (view-container item) being non-NIL rather than (dialog-item-handle item)
  456. ; being non-NIL. This could cause a crash if these methods were called
  457. ; when the table-dialog-item was not installed in a window (though
  458. ; noone has reported this problem).
  459.  
  460.  
  461. ; ==== New file: appleevent-errors-patch.lisp ====
  462. ; Signal errors during AppleEvent processing when
  463. ; *signal-appleevent-errors* is true (not the default)
  464.  
  465.  
  466. ; ==== New file: compile-load-patch.lisp ====
  467. ; The :fasl-file, :ignore-compiler-warnings, & :force-compile
  468. ; keywords are no longer passed along to compile-file or load by
  469. ; compile-load.
  470.  
  471.  
  472. ; ==== New file: portable-idle-patch.lisp ====
  473. ; Keep portables out of idle mode unless MCL is idle.
  474.  
  475.  
  476. ; ==== New file: disabled-etdi-patch.lisp ====
  477. ; disabled editable-text-dialog-item's get gray outlines
  478.  
  479.  
  480. ; ==== New file: aset-bounds-patch.lisp ====
  481. ; Make bounds check on setting displaced one-dimensional arrays
  482. ; work correctly. This patches the subprim $sp-aset1, changing
  483. ; an lsl.l to lsr.l.
  484. ; Also defines the functions patch-resource & patch-subprim, which
  485. ; are (IMHO) useful functions to have around.
  486. ; The following code will generate an out-of-bounds error
  487. ; before the patch is loaded
  488. (defparameter foo (make-array 512 :adjustable t))
  489. (defun lose ()
  490.   (dotimes (i 9000) 
  491.      (when (>= i (length foo))
  492.        (adjust-array foo (* 2 (length foo)))
  493.        (let ((*print-array* nil))
  494.          (print foo)))
  495.      (setf (aref foo i) i)))
  496. (lose)
  497.  
  498.  
  499. ; ==== New file: req-initopt-rest-key-patch.lisp ====
  500. ; Fix a kernel bug that pushed the wrong stuff on the stack
  501. ; when a function had required, optional, rest, & keyword args
  502. ; and a value was not specified for all of the optionals.
  503.  
  504.  
  505. ; ==== New file: resident-interfaces-patch.lisp ====
  506. ; Functions moved from "ccl:library;interfaces.lisp"
  507. ; because they are referenced by some of the autoloaded traps:
  508.  
  509.  
  510. ; ==== New file: round-patch.lisp ====
  511. ; truncate, floor, ceiling, & round now check for multiple
  512. ; values and don't cons a second return value unless it's expected.
  513.  
  514.  
  515. ; ==== New file: register-trap-patch.lisp ====
  516. ; A compiled register trap of the form (register-trap :dn x :rn y ...)
  517. ; neglected to unbox x before saving it in two halves on the vstack.
  518. ; Only 5 traps are of this form:
  519. ;  #_tempnewhandle, #_SysEnvirons, #_Secs2Date, #_SintRemove, #_SetTimeOut
  520. ; There also used to be an optimization that decided to simply
  521. ; nx2-move-reg all of the args. This doesn't work because nx2-move-reg
  522. ; clobbers d0. Besides, no real traps would set off the optimization.
  523.  
  524.  
  525. ; ==== New file: %make-lfun-patch.lisp ====
  526. ; %make-lfun no longer leaves an uninitialized byte at the beginning 
  527. ; of the immediates map.
  528.  
  529.  
  530. ; ==== New file: compiler-patches-p2.lisp ====
  531. ; This fixes:
  532. ;   1) Don't decide that variables bound to closed-over/setqed variables
  533. ;       can be eliminated until you're sure about it;
  534. ;   2) %i- for boolean effect: don't store to addresss "$test";
  535. ;      Makes the following code compile properly (no F-LINE traps allowed)
  536. (defun foo (n)
  537.     (declare (type (integer 0 (10)) n))
  538.     (if (- 10 n) t nil)
  539.     n)
  540. ;   3) Get it over with in FOLD-CONSTANT-SUBFORMS:
  541. ;   4) LABELS wasn't consistent about "parallel" binding order in some (amazingly simple) cases:
  542. ;   5) Don't choke on "(simple-array <type> N)" when looking for constant last dimension.
  543. ;   6) coerce lambda to 'function (finally!)
  544. ;   7) This wasn't maintaining stack discipline.
  545.  
  546. ? (defun test-helper-1 (x y) (declare (ignore x y)) 'b)
  547. TEST-HELPER-1
  548. ? (defun test-helper-2 (a b c d e f g) (list a b c d e f g))
  549. TEST-HELPER-2
  550. ? (defun buggy (e a)
  551.     ((lambda (g0 g1 g2 g3 &key ((:e g4) nil) ((:f g5) nil) ((:g g6) nil))
  552.        (test-helper-2 g0 g1 g2 g3 g4 g5 g6))
  553.      a (test-helper-1 e 'c) 'c 'd :e e))
  554. BUGGY
  555. ? (buggy 'e 'a)
  556. (A B C D B NIL NIL)             ;*** should be (A B C D E NIL NIL)
  557.  
  558. ; 8) The inappropriate use of NX2-GEN-MOVEQ (vice NX2-ABSOLUTE-LONG) here caused
  559. ;    inlined number-of-args-checking to fail when there were >31 required/inherited args.
  560.  
  561. (defmacro make-n-arg-function (name n)
  562.   (let (args)
  563.     (dotimes (i n)
  564.       (push (gensym) args))
  565.     `(defun ,name ,args
  566.        (declare (ignore ,@args)
  567.                 (optimize (speed 3)))
  568.        nil)))
  569. (make-n-arg-function foo 50)
  570. ; This errors before the patch and returns NIL after the patch
  571. (apply #'foo (make-list 50))
  572.  
  573.  
  574. ; 9)  This isn't a compiler-bug per se:
  575. ;     TYPEP has been fbf wrt certain complex array-type-specifiers for some time:
  576.  
  577. (setq ar (make-array '(4 4) :element-type 'double-float))
  578. ; Should return T
  579. (typep ar (type-of ar))
  580.  
  581.  
  582.  
  583. ; ==== New file: toplevel-loop-patch.lisp ====
  584. ; toplevel-loop throws to :toplevel instead of simply
  585. ; exiting in case a user calls it in a loop (in this case,
  586. ; you'll never be able to really get to toplevel so %set-toplevel
  587. ; becomes a nop.
  588.  
  589.  
  590. ; ==== New file: toplevel-meta-g-patch.lisp ====
  591. ; m-g now works correctly in the listener after (toplevel)
  592.  
  593.  
  594. ; ==== New file: locked-hash-table-patch.lisp ====
  595. ; Fix a stack-discipline bug in accessing a hash table that
  596. ; is locked and needs rehashing. This can happen if GETHASH is
  597. ; done during a MAPHASH when a GC has happened since the last time
  598. ; the hash table was rehashed.
  599.